﻿/****************************************************************
 *
 * 
 * 系统名称：销售统计系统 
 * 
 * 模块名称：
 *       文件名  ：Common.js
 *  
 * 作成者：pjd
 *  
 * 
 * 修改履历：
 * 
 * NO        修改日          修改者             修改内容
 * 1        2009/04/28        pjd                新建
 * 
 * 
 ***************************************************************/
//*****************************************************************************
// 功能     : 显示错误提示框
// 参数     : message信息
// 返回值   : nothing
// 作成者   : pjd
//*****************************************************************************\
function ShowErrorMessage(strMessage)
{
    if(!IsNull(strMessage))
    {
        strMessage="E:"+strMessage;
        alert(strMessage);
    }
}

//*****************************************************************************
// 功能     : 显示确认提示框
// 参数     : message信息
// 返回值   : confirm值
// 作成者   : pjd
//*****************************************************************************\
function ShowWarningMessage(strMessage)
{
    if(!IsNull(strMessage))
    {
        strMessage="W:"+strMessage;
       return confirm(strMessage);
    }
}


/*
*去除字符串两边的空格
*/
String.prototype.trim = function() 
{   
    var t =  this.replace(/(^\s*)|(\s*$)/g, "");  
    return t.replace(/^\s+|\s+$/g,"");
}
/*
*去除字符串坐边的空格
*/
String.prototype.ltrim = function() 
{
    return this.replace(/^\s+/,"");
}
/*
*去除字符串右边的空格
*/
String.prototype.rtrim = function() 
{   
    return this.replace(/\s+$/,"");
}

 //*****************************************************************************
// 功能     : 判断是否为空
// 参数     : 字符串
// 返回值   : 布尔值（检查通过为true，通不过为false）
// 作成者   :
//*****************************************************************************
function IsNull(str)
{
    if (str == null || str.trim() == "")
    {
        return true;
    } 
    return false;
} 

//*****************************************************************************
// 功能     : 半角check
// 参数     : 被检查的字符串
// 返回值   : 布尔值（检查通过为true，通不过为false）
// 作成者   : 
//*****************************************************************************
function IsHalfChars(obj)
{   
    obj = obj.trim(); 
	var objRegex = /[^\x00-\xff]/g;
	if (obj == null || obj.length == 0)
	{
		return true;
	}
	if (obj.match(objRegex) != null)
	{
	   	return false;
	}
	return true;
}

//*****************************************************************************
// 功能     : 字符串最大长度检查
// 参数     : str 要检查的字符串, maxlength 字符串的最大长度
// 返回值   : 布尔值（检查通过为true，通不过为false）
// 作成者   : 
//*****************************************************************************
function StrIsSmaller(str, maxlength)
{
    var newStr = str.trim();
    
    if (newStr == null || newStr.length == 0)
	{
		return true;
	}
	if(newStr.length > maxlength)
	{
	    return false;
	}
	return true;
}

//*****************************************************************************
// 功能     : 判断开始日期是否大于结束日期
// 参数     : startDate 开始日期，endDate 结束日期
// 返回值   : 布尔值(开始大于结束返回true，开始小于结束或者二者至少有一个值为空时时返回false)
// 作成者   : 
//*****************************************************************************
function IsStartDateBigger(startDate, endDate)
{
    // 如果开始或者结束日期为空，返回false
    if (startDate == "" || endDate == "")
    {
        return false;
    }
    
    // 二者均不为空，返回比较结果
    return ((new Date(startDate.replace(/-/g,"\/"))) > (new Date(endDate.replace(/-/g,"\/"))));
}

//*****************************************************************************
// 功能     : 判断开始日期是否大于等于结束日期
// 参数     : startDate 开始日期，endDate 结束日期
// 返回值   : 布尔值(开始大于等于结束返回true，开始小于结束或者二者至少有一个值为空时时返回false)
// 作成者   : 
//*****************************************************************************
function IsStartDateBiggerOrEqual(startDate, endDate)
{
    // 如果开始或者结束日期为空，返回false
    if (startDate == "" || endDate == "")
    {
        return false;
    }
     
     startDate = startDate.trim(); 
     endDate = endDate.trim();
    // 二者均不为空，返回比较结果
    return ((new Date(startDate.replace(/-/g,"\/"))) >= (new Date(endDate.replace(/-/g,"\/"))));
}

//*****************************************************************************
// 功能     : 日期格式检查
// 参数     : 日期字符串
// 返回值   : 布尔值（检查通过为true，通不过为false）
// 作成者   :
//*****************************************************************************
function IsValidDate(str)
{   
     str = str.trim();
     var str2=str.split('/');
    
    // 如果日期为空，返回true
    if (str == null || str == "")
    {
        return true;
    }
    
    //输入的年份小于1900年 
    if(str2[0]<1900)   
    {
        return false;
    } 
       
    var reg = /^((((1[6-9]|[2-9]\d)\d{2})\/(0[13578]|1[02])\/(0[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})\/(0[13456789]|1[012])\/(0[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})\/02\/(0[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))\/02\/29))$/g
    if (reg.test(str)) 
    {
        return true;
    }
    return false;
}

//*****************************************************************************
// 功能     : 根据GridView中头部checkbox的状态设定行全选
// 参数     : obj 表头的checkbox，itemName 模版列的checkbox
// 返回值   : 无
// 作成者   : 
//*****************************************************************************
function SelectAll(obj, itemName)
{
    // 获取GridView中所有元素
    var elements = obj.form.elements;
    
    for(var i = 0; i < elements.length; i++)
    {
        if(elements[i].type == "checkbox" && elements[i].name == itemName)
        {
            // 设置每行的check状态和头部的check状态相同
            elements[i].checked = obj.checked;
        }
    }
}

//*****************************************************************************
// 功能     : 判断GridView中是否有行被选中
// 参数     : obj 表头的checkbox，itemName 模版列的checkbox
// 返回值   : 布尔值（有行被选中为true，没有行被选中为false）
// 作成者   : 
//*****************************************************************************
function HasDataSelect(obj, itemName)
{
    // 获取GridView中所有元素
    var elements = obj.form.elements;
    
    for(var i = 0; i < elements.length; i++)
    {
        if(elements[i].type == "checkbox" && elements[i].name == itemName && elements[i].checked == true)
        {
            return true;
        }
    }
    return false;
}

//*****************************************************************************
// 功能     : 数字check(去0操作) 
// 参数     : 被检查的数字字符串 
// 返回值   : 无 
// 作成者   : 
//*****************************************************************************
function ZeroIsCut(obj)
{
    // 取得入力框控件 
    var objName = document.getElementById(obj);
    
    // 取得入力框的值 
    var objValue = objName.value.trim();
    
    if(!IsNull(objValue))
    {
        // 去0操作 
        objValue = parseFloat(objValue);
    }
    
    // 给控件赋值 
    objName.value = objValue;
}

//*****************************************************************************
// 功能     : 判断半角英数
// 参数     : obj 要检查的字符串
// 返回值   : 布尔值(检查通过为true，通不过为false)
// 作成者   : 
//*****************************************************************************
 function StrIsAlpNum(obj)
 {  
    obj = obj.trim();
    var reg=/^[0-9A-Za-z]+$/;
    if(reg.test(obj))
    { 
         return true; 
    }
    return false;
 }
 
//*****************************************************************************
// 功能     : URLcheck
// 参数     : 被检查的字符串
// 返回值   : 布尔值（检查通过为true，通不过为false）
// 作成者   : 
//*****************************************************************************
function StrIsURL(obj)
{   
    obj = obj.trim();
	var objRegex = "^(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$";
	if (obj == null || obj.length == 0)
	{
		return true;
	}
	if (obj.match(objRegex) != null)
	{
	   	return true;
	}
	return false;
}

//*****************************************************************************
// 功能     : 数字check(不允许为负数)
// 参数     : 被检查的字符串
// 返回值   : 布尔值（检查通过为true，通不过为false）
// 作成者   : 
//*****************************************************************************
function StrIsNum(obj)
{   
     obj = obj.trim();

    // 除去头尾空格
	var objRegex = /[\D]/g;

	if (obj == null || obj.length == 0)
	{
		return true;
	}
	if(objRegex.test(obj))
    {
        return false;
    }
    return true;
}

//*****************************************************************************
// 功能     : 数字check(整数)
// 参数     : 被检查的字符串
// 返回值   : 布尔值（检查通过为true，通不过为false）
// 作成者   : 
//*****************************************************************************
function StrIsInteger(obj)
{   
    obj = obj.trim();

    // 除去头尾空格
	var objRegex = "^\\d+$";

	if (obj == null || obj.length == 0)
	{
		return true;
	}
	if (obj.match(objRegex) != null)
	{
	   	return true;
	}
	return false;
}

//*****************************************************************************
// 功能     : 判断两个整数的大小
// 参数     : intMax ，intMin 
// 返回值   : 布尔值(Min大于Max返回false,否则返回true)
// 作成者   : 
//*****************************************************************************
function IsInterBigger(intMin, intMax)
{   
    // 如果两个整数有至少有一个为空，返回true
    if (intMin == "" || intMax == "")
    {
        return true;
    }
    
    // 二者均不为空，返回比较结果
    return ( Number(intMax) >= Number(intMin));
}

//*****************************************************************************

// 功能     : 根据GridView中某行checkbox的状态设定或取消头部全选
// 参数     : headerName 表头的checkbox，itemName 模版列的checkbox
// 返回值   : 无
// 作成者   : 
//*****************************************************************************
function SelcetNoAll(headerName, itemName)
{
    // 获取头部CheckBox
    var obj = document.getElementById(headerName);

    // 取得画面所有元素
    var elements = obj.form.elements;

    for(var i = 0; i < elements.length; i++)
    {
        if(elements[i].type == "checkbox" && elements[i].name == itemName)
        {  
            if(elements[i].checked == false)
            {
                obj.checked = false;

                return;
            }
        }
    }
    obj.checked = true;
}

//*****************************************************************************
// 功能     : 非法字符检索（名称）
// 参数     : 字符串，禁用字符
// 返回值   : bool（检查通过为true，通不过为false）
//*****************************************************************************	
function ChkNGWord(obj)
{   
    obj = obj.trim();
    var objRegex=/[!#\$%&\(\)=\-~\^\|\\{}\[\]@`\+;\*:,\.\?/_']/;
   
    if (obj == null || obj.length == 0)
    {
        return true;
    }              
    if (obj.match(objRegex) != null)
	{
	   	return false;
	}
	return true;
}  

//*****************************************************************************
// 功能     : 非法字符检索（类别名称）
// 参数     : 字符串，禁用字符
// 返回值   : bool（检查通过为true，通不过为false）
//*****************************************************************************	
function ChkNGCategory(obj)
{   
    obj = obj.trim();
    var objRegex=/[!\$%&\(\)=\-~\^\|\\{}\[\]@`\;\*:,\?/_']/;
   
    if (obj == null || obj.length == 0)
    {
        return true;
    }              
    if (obj.match(objRegex) != null)
	{
	   	return false;
	}
	return true;
}  

//*****************************************************************************
// 功能     : 非法字符检索（描述）
// 参数     : 字符串，禁用字符
// 返回值   : bool（检查通过为true，通不过为false）
//*****************************************************************************	
function ChkNGDes(obj)
{   
     obj = obj.trim();
    var objRegex=/[']/;
   
    if (obj == null || obj.length == 0)
    {
        return true;
    }              
    if (obj.match(objRegex) != null)
	{
	   	return false;
	}
	return true;
}  	

//*****************************************************************************
// 功能     : 非法字符检索（密码）
// 参数     : 字符串，禁用字符
// 返回值   : bool（检查通过为true，通不过为false）
//*****************************************************************************	
function ChkNGPassword(obj)
{   
    obj = obj.trim();
    var reg=/^[0-9A-Za-z_]+$/;
    if(reg.test(obj))
    { 
         return true; 
    }
    return false;
} 

//*****************************************************************************
// 功能     : 非法字符检索（关键字）
// 参数     : 字符串，禁用字符
// 返回值   : bool（检查通过为true，通不过为false）
//*****************************************************************************	
function ChkNGKeyWord(obj)
{   
     obj = obj.trim();
    var objRegex=/[!#\$%&\(\)=\-~\^\\{}\[\]@`\+;\*:,\.\?/_']/;
   
    if (obj == null || obj.length == 0)
    {
        return true;
    }              
    if (obj.match(objRegex) != null)
	{
	   	return false;
	}
	return true;
}  	

//*****************************************************************************
// 功能     :浮点型数判断
// 参数     : obj 需要检验的数值，整数部分的位数，小数部分的位数（不要对位数进行判断可传小于或等于零的数）
// 返回值   : 布尔值（检查通过为true，通不过为false）
//*****************************************************************************
function IsValidFloat(obj,n,m)
{       
         obj = obj.trim();
        // 分割整小数部分
        var value = obj.split('.');
        
         //判断是否有整数部分
         if(IsNull(value[0]))
         {
            return false;
         }
        
        //判断小数点个数
        if(value.length > 2)
        {
            return false;
        }
        
        // 整数数部分是非半角数字时
        if(!StrIsNum(value[0]))
        {
            // 通不过检查
            return false;
        }
        
        //判断有没有对整数部分位数的check的要求
        if(n > 0)
        {   
            //判断整数部分位数
            if(value[0].length > n)
            {
                return false;
            }
        }
        
        // 小数部分存在
        if (!IsNull(value[1]))
        {
            // 小数部分是非半角数字时
            if (!StrIsNum(value[1]))
            {
                // 通不过检查
                return false;
	        }
	         
	         //判断有没有对小数部分位数的check的要求
	         if(m > 0)
	         {
                //判断小数部分位数
                if (value[1].length > m)
                {
                    // 通不过检查
                    return false;
                } 
            }       
    }
	return true;
}
//*****************************************************************************
// 功能     : 清空错误信息
// 参数     :  
// 返回值   :  
//*****************************************************************************
function ClearMsg()
{
    $("ctl00_lblErrorMessage").innerHTML = "";
}

//******************************************************************************
// 機能     :  禁止鼠标右键
// 機能説明 :  禁止鼠标右键                                                         
// 返却値   :  false 
//******************************************************************************
//function document.oncontextmenu()
//{
//    event.returnValue=false;
//    return false;
//}

function document.onkeydown()
{
    // 后退键F5和F11
    if (event.keyCode == 8 && event.srcElement.type == "file")
    {
        return false;
    }
    else if ((event.keyCode == 8) && 
        (event.srcElement.type != "text" && 
        event.srcElement.type != "textarea" && 
        event.srcElement.type != "password") || 
        (event.keyCode ==116) || (event.keyCode == 122)) 
    {
        event.keyCode=0;
        event.returnvalue=false;
        return false;
    }
    
    else if ((event.keyCode == 8) &&
        (event.srcElement.type == "text" ||
        event.srcElement.type == "textarea" || 
          event.srcElement.type == "password") &&
        (event.srcElement.readOnly == true))
    {
        event.keyCode=0;
        event.returnvalue=false;
        return false;
    }
    
    else if (event.keyCode == 13)
    {
        if (event.srcElement.form == null || event.srcElement.type == "file")
        {
            return false;
        }
        else if (event.srcElement.type == "submit" || event.srcElement.type == "" || 
        event.srcElement.type == "image" || event.srcElement.form.id == "formLogin" || 
        event.srcElement.type == "textarea")
        {
            return true;
        }
        else
        {
            event.keyCode=9;
        }
    }
    
    // 特殊字符
    else if (((event.shiftKey) && (event.keyCode == 191)) || 
            ((event.shiftKey) && (event.keyCode == 220)) ||
            ((event.shiftKey) && (event.keyCode == 222)))
    {
        return true;
    }
    
    // 特殊字符(')
    else if (event.keyCode == 222)
    {
        return false;
    }            
    
    // CTRL + E 
    else if ((event.ctrlKey)&&(event.keyCode==69))
    {   
        return false; 
    }
    
    // CTRL + L 
    else if ((event.ctrlKey)&&(event.keyCode==76))
    {   
        return false; 
    }
    
    // CTRL + O 
    else if ((event.ctrlKey)&&(event.keyCode==79))
    {   
        return false; 
    }
    
    // CTRL + R 
    else if ((event.ctrlKey)&&(event.keyCode==82))
    {   
        return false; 
    }
    
    // CTRL + W 
    else if ((event.ctrlKey)&&(event.keyCode==87))
    {   
        return false; 
    }
}

//******************************************************************************
// 机能   :  POPUP画面异常时关闭画面
// 机能说明 :  POPUP画面异常时关闭画面                                                         
// 返回值   :  false 
//******************************************************************************
function CloseWinWithException(msg,type)
{  
    var obj = new Object();
    obj.msg = msg;
    obj.type = type;
    returnValue = obj;
    window.opener = null;
    self.close();
    return false; 
}



//*****************************************************************************
// 功能     :业务异常的处理方式// 参数     : message内容 
//author    : pjd
//*****************************************************************************
function popupBusinessException(message)
{
  if (document.readyState!="complete")
               {
                    document.onreadystatechange=function()
                    {
                        if(document.readyState=="complete")
                        jQuery.popup.show("信息提示",message,"");
                    }
                }
    
}


//*****************************************************************************
// 功能     :alert信息的处理方式// 参数     : message内容 
//author    : pjd
//*****************************************************************************
function popupMsg(message)
{
    jAlert(message,"信息提示",""); 
    
}


//*****************************************************************************
// 功能     : showModalDialog弹出画面
// 引数     : 
// 作成者   :浦简冬 
//*****************************************************************************
function openNewWindows(strUrl,strWindow)
{
    var flag=window.showModalDialog(strUrl,window,strWindow);
    //系统异常 
    if(flag != null && flag != undefined ) 
    {    
        if(typeof(flag) == "object" && flag.msg != undefined &&  flag.type != undefined)
        {                   
            var iTop = window.screenTop;
            var iLeft = window.screenLeft;
            
            // 打开异常画面    
            window.open('../Error.aspx?message='+escape(flag.msg)+"&type="+escape(flag.type),'','width=975px,height=768px,scrollbars=no,toolbar=no,location=no,top=' + iTop +',left=' + iLeft + ',directories=no,menubar=no,resizable=no,status=yes');
            window.opener=null;
            window.close();  
         }
     }      
    
    event.returnValue=false;
}

//*****************************************************************************
// 功能     :确认删除
// 引数     : 
// 作成者   :浦简冬 
//*****************************************************************************
function confirmDelete()
{
return confirm("确定删除此记录?");

}
 